/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package interprete;

/**
 *
 * @author lynx
 */
class Token {

    enum token {IGUALDAD, ASIGNACIÓN, MENOR_IGUAL, DIFERENTE, MENOR, MAYOR_IGUAL, MAYOR, PI, PD, MAS, MENOS, POR, ENTRE, CI, CD, COMA, Y, O, INICIO, FIN, MIENTRAS, HAS, SINO, SI, VARIABLE, LITERAL, EOF, ERROR, REGRESA, ESCRIBE, LEE, NO, CADENA, DEFINE, FORMATO, COMENTARIO};    
    enum tipo {CONTROL, LITERAL, VARIABLE, FUNCIÓN, DESCONOCIDO, ARREGLO, CADENA};    
    final token token;
    final String lexema;
    private double valor;
    private tipo tipo;
    private int segmento;
    private Token padre;
    private Arreglo arreglo;

    Token(token t, String lexema, double valor) {
        this.token = t;
        this.lexema = lexema;
        this.valor = valor;
        tipo = tipo.DESCONOCIDO;
        segmento = -1;
        padre = null;
    }

    double valor() {
        return valor;
    }
    
    void valor(double valor){
        this.valor = valor;
    }
    
    int segmento(){
        return segmento;
    }
    
    void segmento(int segmento){
        this.segmento = segmento;
    }
    
    tipo tipo(){
        return tipo;
    }
    
    void tipo(tipo tipo){
        this.tipo = tipo;
    }
    
    Token padre(){
        return padre;
    }
    
    void padre(Token padre){
        this.padre = padre;
    }
    
    Arreglo arreglo(){
        return arreglo;
    }
    
    void arreglo(Arreglo arreglo){
        this.arreglo = arreglo;
    }
    
}
